package com.yunwaikeji.gy_tool_library.widget;

import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.View;

import com.yunwaikeji.gy_tool_library.info.GYBaseInfo;
import com.yunwaikeji.gy_tool_library.info.GYDisplayInfo;
import com.yunwaikeji.gy_tool_library.info.GYViewInfo;

public interface GYViewInterface<V> extends GYBaseInfo {
    void initView(AttributeSet attributeSet);

    V setBackground1(Drawable background);

    Drawable getBackgroundDrawable();

    V setBackgroundColor1(int backgroundColor);

    V setBackgroundColors(int... backgroundColor);

    V setState(@GYViewInfo.ChangeEffect int state);

    int getState();

    V setChangegroundDrawable(Drawable changegroundDrawable);

    Drawable getChangegroundDrawable();

    V setStateColor(int stateColor);

    V setStateColors(int... stateColors);

    V setDisplayStyle(@GYDisplayInfo.DisplayStyle int type);

    int getDisplayStyle();

    V setRadiusPx(int radiusPx);

    V setRadiusDp(int radiusDp);

    V setRadiusLeftTopPx(int radiusLeftTopPx);

    V setRadiusLeftTopDp(int radiusLeftTopDp);

    int getRadiusLeftTopPx();

    V setRadiusRightTopPx(int radiusRightTopPx);

    V setRadiusRightTopDp(int radiusRightTopDp);

    int getRadiusRightTopPx();

    V setRadiusRightBottomPx(int radiusRightBottomPx);

    V setRadiusRightBottomDp(int radiusRightBottomDp);

    int getRadiusRightBottomPx();

    V setRadiusLeftBottomPx(int radiusLeftBottomPx);

    V setRadiusLeftBottomDp(int radiusLeftBottomDp);

    int getRadiusLeftBottomPx();

    V setEdgeWidthPx(int edgeWidthPx);

    int getEdgeWidthPx();

    V setEdgeWidthDp(int edgeWidthDp);

    V setEdgeColor(int edgeColor);

    int getEdgeColor();

    V setEdgeOver(boolean edgeOver);

    boolean isEdgeOver();

    V clearAllGround();

    V refreshBackground();

    V setSizePx(int widthPx, int heightPx, float weight);

    V setSizeDp(int widthDp, int heightDp, float weight);

    V setSizePx(int widthPx, int heightPx);

    V setSizeDp(int widthDp, int heightDp);

    V setWidthPx(int widthPx);

    V setWidthDp(int widthDp);

    V setHeightPx(int heightPx);

    V setHeightDp(int heightDp);

    V setWeight(float weight);

    float getWeight();

    int getWidthPx();

    int getHeightPx();

    V setMarginPx(int leftPx, int topPx, int rightPx, int bottomPx);

    V setMarginDp(int leftDp, int topDp, int rightDp, int bottomDp);

    V setPaddingPx(int leftPx, int topPx, int rightPx, int bottomPx);

    V setPaddingDp(int leftDp, int topDp, int rightDp, int bottomDp);

    V setVisibility1(int visibility);

    V setClickable1(boolean clickable);

    V setOnClickListener1(View.OnClickListener onClickListener);

    V setOnLongClickListener1(View.OnLongClickListener onLongClickListener);

    V setOnContextClickListener1(View.OnContextClickListener onContextClickListener);
}
